#include <iostream>
#include <memory>
using namespace std;

class A
{
    public:
    auto_ptr<int>ip;
    A()
    {}
    A(auto_ptr<int> set_ip):ip(set_ip)
    {}
    A(class A & a)
    {
        this->ip = a.ip;
    }
};

int main()
{
    // 创建一个auto_ptr智能指针，指向动态分配的A类对象
    // auto_ptr是C++98引入的智能指针，会自动管理所指向对象的生命周期
    auto_ptr<int> p1(new int);
    auto_ptr<int> p2 = p1;

    *p2 = 100;
    cout << "*p2的值为: " << *p2 << endl;
    // cout << "*p1的值为: " << *p1 << endl; // 不能访问p1指向的内存，因为p1的数据已经转移给p2了


    auto_ptr<int> ip(new int);
    
    class A a1(ip);
    class A a2(a1);
    *(a2.ip) = 1000;
    cout << "*a2.ip的值为: " << *a2.ip << endl; // 100
    cout << "*a1.ip的值为: " << *a1.ip << endl; // 不能访问a1指向的内存，因为a1的数据已经转移给a2了



    
    
    return 0;
}